1.6
指针、数组、函数、动态内存、文件操作

指针
指针是地址

定义：数据类型*指针名=地址

#include<stdio.h>
#include<stdlib.h>

int main()
{
	int n = 0;
	int* p = &n;
	p = &n;
	return 0;
}
数组
如果需要保存更多的数据，可以考虑使用数组

数组名[数组长度]

地址连续
数组名为首地址
定义后长度固定
数据类型统一
#include<stdio.h>
#include<stdlib.h>

int main()
{
	int a[10];//无赋值
	return 0;
}
赋值可用循环赋值，也可以直接赋值

可以配合指针使用

函数
提高开发效率

代码模块化

有返回值 命名规则同变量名规则

声明可以直接使用函数名进行函数调用

定义实现：

void Hello()
{
    printf("hello");
}
声明引用：

void hello();

int main()
{
    hello();
    return 0;
}
动态内存
结构体（类似于对象） 数组 这两个保存在内存堆中 可以静态或者动态分配内存

在程序运营过程中才能知道事物的大小，此时需要动态分配内存

程序员手动动态开内存，不用时需要释放，否则会内存泄漏

malloc函数可以动态开辟内存，能返回动态内存地址

#include<stdio.h>
#include<stdlib.h>

int main()
{
	int size;
	scanf("%d", &size);
	int* p = malloc(size * 4);//p指向开辟内存首地址
	for (int i = 0; i < size; i++)
	{
		*(p + i) = rand();
	}
	free(p);
	return 0;
}
文件操作
#include<stdio.h>
#include<stdlib.h>

int main()
{
	int num = 100;
	FILE* f = fopen("1.6","wb");
	fwrite(&num,4,1,f);
	f = NULL;
	return 0;
}
#include<stdio.h>
#include<stdlib.h>

int main()
{
	int num = 100;
	FILE* f = fopen("1.6","rb");
	fread(&num,4,1,f);
	printf("d", num);
	f = NULL;
	return 0;
}